|
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**) ОТДЕЛ Рамка;
(*============================================================================*
* НАЗНАЧЕНИЕ: размеры и местоположение для Поле и Надел
*============================================================================*)
ВИД
Доступ-=ДОСТУП К Вид;
Вид-=НАБОР
(* расположение на экране границ рамки *)
вс-:ЦЕЛ; (* верхняя строка *)
лк-:ЦЕЛ; (* левая колонка *)
нс-:ЦЕЛ; (* нижняя строка *)
пк-:ЦЕЛ; (* правая колонка *)
(* размеры и положение относительно окружающего поля *)
верх:ЦЕЛ; (* при < 0 расстояние от нижней внешней границы поля до верхней строки *)
лево:ЦЕЛ; (* при < 0 расстояние от правой внешней границы поля до левой колонки *)
строк:ЦЕЛ; (* при <= 0 расстояние нижней границы поля до нижней строки *)
колонок:ЦЕЛ;(* при <= 0 расстояние от правой границы поля до правой колонки *)
КОН;
(******************************************************************************)
ЗАДАЧА Выставить-(рамка,поле:Доступ);
(* выставляет границы <рамка> на экране, учитывая положение окружающего <поле> *)
УКАЗ
(* перевод левого верхнего угла *)
ЕСЛИ рамка.верх < 0 ТО
рамка.вс:=поле.нс+1+рамка.верх
ИНАЧЕ
рамка.вс:=поле.вс+рамка.верх
КОН;
ЕСЛИ рамка.лево < 0 ТО
рамка.лк:=поле.пк+1+рамка.лево
ИНАЧЕ
рамка.лк:=поле.лк+рамка.лево
КОН;
(* перевод правого нижнего угла *)
рамка.нс:=рамка.вс+рамка.строк-1;
рамка.пк:=рамка.лк+рамка.колонок-1;
ЕСЛИ рамка.строк <= 0 ТО
рамка.нс:=поле.нс+рамка.строк
КОН;
ЕСЛИ рамка.колонок <= 0 ТО
рамка.пк:=поле.пк+рамка.колонок
КОН
КОН Выставить;
(******************************************************************************)
ЗАДАЧА Подготовить-(рамка:Доступ; верх,лево,строк,колонок:ЦЕЛ);
УКАЗ
рамка.верх:=верх;
рамка.лево:=лево;
рамка.строк:=строк;
рамка.колонок:=колонок;
(* если это положение относительно экрана *)
рамка.вс:=верх;
рамка.лк:=лево;
рамка.нс:=верх+строк-1;
рамка.пк:=лево+колонок-1
КОН Подготовить;
КОН Рамка.
|
|